package Controladores;

import Dao.PeriodistaJpaController;
import Dao.exceptions.IllegalOrphanException;
import Dao.exceptions.NonexistentEntityException;
import Dao.exceptions.PreexistingEntityException;
import Logico.Periodista;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class ControladorPeriodista {

    PeriodistaJpaController daoPeriodista;
    ConnectionFactory conection;

    public ControladorPeriodista() {

        conection = new ConnectionFactory();
        daoPeriodista = new PeriodistaJpaController(conection.getFactory());
    }

    public boolean guardar(int cedula, String nombre, String apellidos, String nacionalidad, String medioComunicacion) {

        boolean guardado = false;

        Periodista periodista = new Periodista();
        periodista.setIdperiodista(cedula);
        periodista.setNombre(nombre);
        periodista.setApellidos(apellidos);
        periodista.setNacionalidad(nacionalidad);
        periodista.setMediocomunicacion(medioComunicacion);

        try {
            daoPeriodista.create(periodista);
            guardado = true;

        } catch (PreexistingEntityException ex) {
            JOptionPane.showMessageDialog(null, "Ya existe un Periodista con la cedula: " + cedula + ". Por favor inténtelo de nuevo");
        } catch (Exception ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }

        return guardado;
    }

    public boolean borrar(int cedula) {

        boolean borrado = false;

        try {
            daoPeriodista.destroy(cedula);
            borrado = true;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorPeriodista.class.getName()).log(Level.SEVERE, null, ex);
        }

        return borrado;
    }

    public boolean modificar(int cedula, String nombre, String apellidos, String nacionalidad, String medioComunicacion) {

        boolean modificado = false;

        Periodista periodistaEncontrado = this.buscar(cedula);

        if (periodistaEncontrado != null) {

            periodistaEncontrado.setNombre(nombre);
            periodistaEncontrado.setApellidos(apellidos);
            periodistaEncontrado.setNacionalidad(nacionalidad);
            periodistaEncontrado.setMediocomunicacion(medioComunicacion);

            try {

                daoPeriodista.edit(periodistaEncontrado);
                modificado = true;
            } catch (IllegalOrphanException ex) {
                Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }

        } else {
            JOptionPane.showMessageDialog(null, "El Periodista no se encuentra en nuestro sistema.");
        }

        return modificado;
    }

    public Periodista buscar(int cedula) {

        return daoPeriodista.findPeriodista(cedula);
    }

    public List<Periodista> listarPeriodista() {

        return daoPeriodista.findPeriodistaEntities();
    }
}
